#ifndef BUILDING_H_
#define BUILDING_H_


#include <vector>
#include <pcl/point_types.h>
//#include <time.h>

class Facade;

class Building
{
public:

	Building()
	{
		//srand( time(NULL));
		_ID.append("B");
		for(int i = 0; i < 10; i++)
		{
			int random = rand() % 100;
			std::ostringstream convert;
			convert << random;
			//string test = static_cast<string>(random);
			_ID.append(convert.str());
		}
		_name.append("building: ");
		_name.append(_ID);
		_description = "Description here...";
		_height = 0.0;
		_sag = 0;
		_sbg = 0;
	}

	Building(std::string myID, std::string myname, std::string mydesc, float myheight, int mysag, int mysbg)
	{
		_name = myname;
		_description = mydesc;
		_height = myheight;
		_sag = mysag;
		_sbg = mysbg;
	}

	std::string getID(){return _ID;}

	std::string getName(){return _name;}
	void setName(std::string n){ _name = n;}
	std::string getDescription(){return _description;}

	float getHeight(){return _height;}

	int getSAG(){return _sag;}

	int getSBG(){return _sbg;}

	std::vector<Facade*>* getFacades(){return &_facades;}

	void addFacade(Facade* f);

private:

	std::string _ID;
	std::string _name;
	std::string _description;
	float _height;
	int _sag; //storeys above ground
	int _sbg; //storeys below ground

	std::vector<Facade*> _facades; //has a list of facades

};

#endif